package com.crm.service.csd.customerManager;

import com.crm.model.entity.csd.customerManager.CustomerInfo;
import com.crm.model.entity.customerManager.Customer;
import com.crm.model.qo.csd.customerManager.CustomerInfoQO;
import com.crm.model.qo.csd.customerManager.CustomerQO;
import com.crm.model.vo.csd.customerManager.CustomerDetailVO;
import com.crm.model.vo.csd.customerManager.CustomerInfoVO;
import com.crm.model.vo.csd.customerManager.CustomerVO;
import com.crm.model.vo.csd.customerManager.ImportCustomerInfoVO;

import java.util.List;

/**
 * @author yincuimei
 * @Date 2021/7/23 11:11
 * (客服部)-客户管理
 */
public interface CustomerDbService {

    /**
     * 客户列表
     * @param customerQO --查询条件
     * @param orderStr   --排序
     * @author yincuimei
     * @return
     */
    List<CustomerVO> selectCustomerVOList(CustomerQO customerQO, String orderStr);

    /**
     * 会员客户列表
     * @param customerQO --查询条件
     * @param orderStr   --排序
     * @author wangpeng
     * @return
     */
    List<CustomerVO> selectCustomerMemberList(CustomerQO customerQO, String orderStr);

    /**
     * 非会员客户列表
     * @param customerQO --查询条件
     * @param orderStr   --排序
     * @author wangpeng
     * @return
     */
    List<CustomerVO> selectCustomerNonMemberList(CustomerQO customerQO, String orderStr);


    /**
     * 客户详情(企业客户)
     * @param customerId --客户ID
     * @author yincuimei
     * @return
     */
    CustomerDetailVO selectCustomerDetailVO(String customerId);

    /**
     * 客户编辑(企业客户)
     * @param customer
     * @author yincuimei
     * @return
     */
    Boolean updateCustomerByCustomerId(Customer customer);

    /**
     * 收回客户-修改客户信息
     * @param customer
     * @author yincuimei
     * @return
     */
    Boolean updateRetrieveCustomer(Customer customer);

    /**
     * 客户列表--操作解锁
     * @param customerId --客户ID
     * @author wangpeng
     * @return
     */
    Boolean updateCustomerMembershipLevelUnlock(String customerId);

    /**
     * 客户列表--操作锁定
     * @param customerId --客户ID
     * @author wangpeng
     * @return
     */
    Boolean updateCustomerMembershipLevelLocking(String customerId);

    /**
     * selectCustomerInfoList
     * @Author wangpeng
     * @Date 2021/9/27
     * @param customerQO	
     * @param order
     * @return
     */
    List<CustomerInfoVO> selectCustomerInfoList(CustomerInfoQO customerQO, String order);

    /**
     * addCustomerInfo
     * @Author wangpeng
     * @Date 2021/10/12
     * @param list	
     * @return
     */
    void addCustomerInfo(List<CustomerInfo> list);

    /**
     * exportExcel
     * @Author wangpeng
     * @Date 2021/10/12
     * @param 	
     * @return
     */
    List<ImportCustomerInfoVO> exportExcel();

    List<CustomerInfoVO> selectProviceList();

    List<CustomerInfoVO> selectCityByProvice(String provice);

    List<CustomerInfoVO> selectDistrictByProviceCity(String provice, String city);

    List<CustomerInfoVO> selectIndustryTypeList();

    /**
     * 获取客户信息详情
     * @param customerInfoId
     * @return
     */
    CustomerInfo getCustomerInfoDetailByCustomerInfoId(String customerInfoId);

    /**
     * 【客服部】客户信息库列表-详细-调整
     * @param customerInfo
     * @author yincuimei
     * @return
     */
    Boolean updateCompanyAndAccountById(CustomerInfo customerInfo);
}
